#include <sxPoint.h>

Sx::Graphics::Objects::Point::Point() : GraphicsObject() {
	this->coordinates = Eigen::Vector3f::Zero();
}

Sx::Graphics::Objects::Point::Point(float x, float y, float z) {
	this->coordinates = Eigen::Vector3f(x, y, z);
}

Sx::Graphics::Objects::Point::Point(const Eigen::Vector3f& position) {
	this->coordinates = position;
}

Sx::Graphics::Objects::Point::~Point() {}

bool Sx::Graphics::Objects::Point::construct() { return true; }

void Sx::Graphics::Objects::Point::update(float dt) { return; }

void Sx::Graphics::Objects::Point::setX(float x) {
	this->coordinates.x() = x;
}

void Sx::Graphics::Objects::Point::setY(float y) {
	this->coordinates.y() = y;
}

void Sx::Graphics::Objects::Point::setZ(float z) {
	this->coordinates.z() = z;
}

void Sx::Graphics::Objects::Point::set(float x, float y, float z) {
	this->coordinates.x() = x;
	this->coordinates.y() = y;
	this->coordinates.z() = z;
}

void Sx::Graphics::Objects::Point::set(const Eigen::Vector3f& position) {
	this->coordinates.x() = position.x();
	this->coordinates.y() = position.y();
	this->coordinates.z() = position.z();
}

Eigen::Vector3f& Sx::Graphics::Objects::Point::position() {
	return this->coordinates;
}

Eigen::Vector3f Sx::Graphics::Objects::Point::getPosition() const {
	return this->coordinates;
}

Eigen::Vector3f Sx::Graphics::Objects::Point::getCoordinates() const {
	return this->coordinates;
}
